import qplayas.Acceso;
import qplayas.Caracteristicas;
import qplayas.Hospital;
import qplayas.Medioambiente;
import qplayas.Playa
import qplayas.Posicion
import qplayas.Seguridad;
import qplayas.Servicios;
import qplayas.Tipo;
import qplayas.Transporte;
import qplayas.Turismo;
import qplayas.security.*

class BootStrap {
	def springSecurityService
	
    def init = { servletContext ->		
		println ("Creando playas ===>>>>>>")		
		Playa p = new Playa(
			nombre: "Gandia",
			localidad: "Gandia",
			provincia: "Valencia",
			nombreFormalizado: "valenciaSurDeGandia",
			posicion: new Posicion(
				latitud: 38.972756d,
				longitud: -0.183334d
			),
			caracteristicas: new Caracteristicas(
				longitud: 1231,
				anchura: 50,
				gradoOcupacion: "Alto",
				paseoMaritimo: true
			),
			tipo: new Tipo(
				composicion: "Arena Blanca",
				tipoArena: "Blanca",
				condicionesBano: "Buenas",
				nudista: false,
				zonaFondeo: false,
			),
			acceso: new Acceso(
				tipo: "A pie",
				senalizacion: "Si",
				minusvalidos: false
			),
			transporte: new Transporte(
				autobus: "Coche de linea",
				aparcamiento: "Si"
			),
			hospital: new Hospital(
				nombre: "Hospital Sta. Clara",
				direccion: "Avenida de los socorros",
				telefono: "923234234",
				distanciaPlaya: "Mucho"
			),
			seguridad: new Seguridad(
				vigilancia: false,
				senalPeligro: false,
				policiaLocal: false,
				puestoCruzRoja: false,
				equipoSalvamento: false
			),
			turismo: new Turismo(
				oficina: true,
				correoElectronico: "oficina@chinchilla.es"
			),			
			servicios: new Servicios(
				aseos:false,
				duchas:false,
				telefonos:false,
				papeleras:false,
				servicioLimpieza:false,
				pasarelaAcceso:false,
				alquilerSombrilla:false,
				alquilerHamaca:false,
				alquilerNautico:false,
				kioskosBalnearios:false,
				clubNautico:false,
				zonaSubmarinismo:false,
				puertoDeportivo: "Si"
			),
			medioambiente: new Medioambiente(
				presenciaVegetacion: true,				
				zonaProtegida: true,
				banderaAzul: true
			)
		).save()
		println ("Playas creadas ===>>>>>>")		
		
		/***************** SECURITY ACCESS ********************/
		def userRole = SecRole.findByAuthority('ROLE_USER') ?: new SecRole(authority: 'ROLE_USER').save(failOnError: true)
		def adminRole = SecRole.findByAuthority('ROLE_ADMIN') ?: new SecRole(authority: 'ROLE_ADMIN').save(failOnError: true)
		
		def adminUser = SecUser.findByUsername('admin') ?: new SecUser(
			username: 'admin',
			password: springSecurityService.encodePassword('admin'),
			authority: 'ROLE_USER',
			enabled: true).save(failOnError: true)
			
		if (!adminUser.authorities.contains(userRole)) {
            SecUserSecRole.create adminUser, userRole
        }
						
    }
    def destroy = { }
}
